home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- public class Date {
- private long value;
- private boolean valueValid;
- private boolean expanded;
- private short tm_millis;
- private byte tm_sec;
- private byte tm_min;
- private byte tm_hour;
- private byte tm_mday;
- private byte tm_mon;
- private byte tm_wday;
- private short tm_yday;
- private int tm_year;
- private int tm_isdst;
- private static short[] monthOffset = new short[]{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
- private static final String[] wtb = new String[]{"am", "pm", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday", "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december", "gmt", "ut", "utc", "est", "edt", "cst", "cdt", "mst", "mdt", "pst", "pdt"};
- private static final int[] ttb = new int[]{0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 10000, 10000, 10000, 10300, 10240, 10360, 10300, 10420, 10360, 10480, 10420};
-
- public Date() {
- this(System.currentTimeMillis());
- }
-
- public Date(long var1) {
- this.value = var1;
- this.valueValid = true;
- this.expanded = false;
- }
-
- public Date(int var1, int var2, int var3) {
- this(var1, var2, var3, 0, 0, 0);
- }
-
- public Date(int var1, int var2, int var3, int var4, int var5) {
- this(var1, var2, var3, var4, var5, 0);
- }
-
- public Date(int var1, int var2, int var3, int var4, int var5, int var6) {
- this.expanded = true;
- this.valueValid = false;
- this.tm_millis = 0;
- this.tm_sec = (byte)var6;
- this.tm_min = (byte)var5;
- this.tm_hour = (byte)var4;
- this.tm_mday = (byte)var3;
- this.tm_mon = (byte)var2;
- this.tm_wday = 0;
- this.tm_yday = 0;
- this.tm_year = var1;
- this.computeValue();
- this.expand();
- }
-
- public Date(String var1) {
- this(parse(var1));
- }
-
- public static long UTC(int var0, int var1, int var2, int var3, int var4, int var5) {
- long var6 = (long)(var2 + monthOffset[var1] + ((var0 & 3) == 0 && (var0 % 100 != 0 || (var0 + 300) % 400 == 0) && var1 >= 2 ? 0 : -1)) + (long)(var0 - 70) * 365L + (long)((var0 - 69) / 4) - (long)((var0 - 1) / 100) + (long)((var0 + 299) / 400);
- return (long)((var5 + 60 * (var4 + 60 * var3)) * 1000) + 86400000L * var6;
- }
-
- public static long parse(String var0) {
- int var1 = -1;
- byte var2 = -1;
- byte var3 = -1;
- int var4 = -1;
- byte var5 = -1;
- byte var6 = -1;
- char var7 = '\uffff';
- int var8 = 0;
- int var9 = -1;
- int var10 = -1;
- char var11 = 0;
- if (var0 != null) {
- int var12 = var0.count;
-
- while(true) {
- if (var8 >= var12) {
- if (var1 >= 0 && var2 >= 0 && var3 >= 0) {
- if (var6 < 0) {
- var6 = 0;
- }
-
- if (var5 < 0) {
- var5 = 0;
- }
-
- if (var4 < 0) {
- var4 = 0;
- }
-
- if (var10 == -1) {
- return (new Date(var1, var2, var3, var4, var5, var6)).getTime();
- }
-
- return UTC(var1, var2, var3, var4, var5, var6) + (long)(var10 * '\uea60');
- }
- break;
- }
-
- var7 = var0.charAt(var8);
- ++var8;
- if (var7 > ' ' && var7 != ',' && var7 != '-') {
- if (var7 == '(') {
- int var21 = 1;
-
- while(var8 < var12) {
- var7 = var0.charAt(var8);
- ++var8;
- if (var7 == '(') {
- ++var21;
- } else if (var7 == ')') {
- --var21;
- if (var21 <= 0) {
- break;
- }
- }
- }
- } else if (var7 >= '0' && var7 <= '9') {
- for(var9 = var7 - 48; var8 < var12 && (var7 = var0.charAt(var8)) >= '0' && var7 <= '9'; ++var8) {
- var9 = var9 * 10 + var7 - 48;
- }
-
- if (var11 != '+' && (var11 != '-' || var1 < 0)) {
- if (var9 >= 70) {
- if (var1 >= 0 || var7 > ' ' && var7 != ',' && var7 != '/' && var8 < var12) {
- break;
- }
-
- var1 = var9 < 1900 ? var9 : var9 - 1900;
- } else if (var7 == ':') {
- if (var4 < 0) {
- var4 = (byte)var9;
- } else {
- if (var5 >= 0) {
- break;
- }
-
- var5 = (byte)var9;
- }
- } else if (var7 == '/') {
- if (var2 < 0) {
- var2 = (byte)var9;
- } else {
- if (var3 >= 0) {
- break;
- }
-
- var3 = (byte)var9;
- }
- } else {
- if (var8 < var12 && var7 != ',' && var7 > ' ' && var7 != '-') {
- break;
- }
-
- if (var4 >= 0 && var5 < 0) {
- var5 = (byte)var9;
- } else if (var5 >= 0 && var6 < 0) {
- var6 = (byte)var9;
- } else {
- if (var3 >= 0) {
- break;
- }
-
- var3 = (byte)var9;
- }
- }
- } else {
- if (var9 < 24) {
- var9 *= 60;
- } else {
- var9 = var9 % 100 + var9 / 100 * 60;
- }
-
- if (var11 == '+') {
- var9 = -var9;
- }
-
- if (var10 != 0 && var10 != -1) {
- break;
- }
-
- var10 = var9;
- }
-
- var11 = 0;
- } else if (var7 != '/' && var7 != ':' && var7 != '+' && var7 != '-') {
- int var13;
- for(var13 = var8 - 1; var8 < var12; ++var8) {
- var7 = var0.charAt(var8);
- if ((var7 < 'A' || var7 > 'Z') && (var7 < 'a' || var7 > 'z')) {
- break;
- }
- }
-
- if (var8 <= var13 + 1) {
- break;
- }
-
- int var14 = wtb.length;
-
- while(true) {
- --var14;
- if (var14 < 0) {
- break;
- }
-
- if (wtb[var14].regionMatches(true, 0, var0, var13, var8 - var13)) {
- int var15 = ttb[var14];
- if (var15 != 0) {
- if (var15 == 1) {
- if (var4 > 12 || var4 < 0) {
- throw new IllegalArgumentException();
- }
-
- var4 += 12;
- } else if (var15 <= 13) {
- if (var2 >= 0) {
- throw new IllegalArgumentException();
- }
-
- var2 = (byte)(var15 - 2);
- } else {
- var10 = var15 - 10000;
- }
- }
- break;
- }
- }
-
- if (var14 < 0) {
- break;
- }
-
- var11 = 0;
- } else {
- var11 = var7;
- }
- }
- }
- }
-
- throw new IllegalArgumentException();
- }
-
- public int getYear() {
- if (!this.expanded) {
- this.expand();
- }
-
- return this.tm_year;
- }
-
- public void setYear(int var1) {
- if (!this.expanded) {
- this.expand();
- }
-
- this.tm_year = var1;
- this.valueValid = false;
- }
-
- public int getMonth() {
- if (!this.expanded) {
- this.expand();
- }
-
- return this.tm_mon;
- }
-
- public void setMonth(int var1) {
- if (!this.expanded) {
- this.expand();
- }
-
- this.tm_mon = (byte)var1;
- this.valueValid = false;
- }
-
- public int getDate() {
- if (!this.expanded) {
- this.expand();
- }
-
- return this.tm_mday;
- }
-
- public void setDate(int var1) {
- if (!this.expanded) {
- this.expand();
- }
-
- this.tm_mday = (byte)var1;
- this.valueValid = false;
- }
-
- public int getDay() {
- if (!this.expanded) {
- this.expand();
- } else if (this.tm_wday < 0 || !this.valueValid) {
- this.computeValue();
- this.expand();
- }
-
- return this.tm_wday;
- }
-
- public int getHours() {
- if (!this.expanded) {
- this.expand();
- }
-
- return this.tm_hour;
- }
-
- public void setHours(int var1) {
- if (!this.expanded) {
- this.expand();
- }
-
- this.tm_hour = (byte)var1;
- this.valueValid = false;
- }
-
- public int getMinutes() {
- if (!this.expanded) {
- this.expand();
- }
-
- return this.tm_min;
- }
-
- public void setMinutes(int var1) {
- if (!this.expanded) {
- this.expand();
- }
-
- this.tm_min = (byte)var1;
- this.valueValid = false;
- }
-
- public int getSeconds() {
- if (!this.expanded) {
- this.expand();
- }
-
- return this.tm_sec;
- }
-
- public void setSeconds(int var1) {
- if (!this.expanded) {
- this.expand();
- }
-
- this.tm_sec = (byte)var1;
- this.valueValid = false;
- }
-
- public long getTime() {
- if (!this.valueValid) {
- this.computeValue();
- }
-
- return this.value;
- }
-
- public void setTime(long var1) {
- this.value = var1;
- this.valueValid = true;
- this.expanded = false;
- }
-
- public boolean before(Date var1) {
- return this.getTime() < var1.getTime();
- }
-
- public boolean after(Date var1) {
- return this.getTime() > var1.getTime();
- }
-
- public boolean equals(Object var1) {
- return var1 != null && var1 instanceof Date && this.getTime() == ((Date)var1).getTime();
- }
-
- public int hashCode() {
- long var1 = this.getTime();
- return (int)var1 ^ (int)(var1 >> 32);
- }
-
- public native String toString();
-
- public native String toLocaleString();
-
- public native String toGMTString();
-
- public int getTimezoneOffset() {
- if (!this.expanded) {
- this.expand();
- }
-
- return (int)((this.getTime() - UTC(this.tm_year, this.tm_mon, this.tm_mday, this.tm_hour, this.tm_min, this.tm_sec)) / 60000L);
- }
-
- private native void expand();
-
- private native void computeValue();
- }
-